The process of “building a computer” involves the combining of hardware components and software components into one configuration that operates as a single unit to perform desired computing tasks. For the purposes of this discussion, the focus is on building a computer as it relates to the software components. This discussion and description focus on building a computer as it relates to the software components required in the computer. As a result, this discussion will not address the prerequisite process of actually assembling hardware components (disks, mother boards, CPU's graphics cards, monitors, keyboards, etc).
With regard to the construction and installation of software components, building a computer therefore involves the basic steps of:
1. Configuring a Basic Input/Output System (BIOS) to understand what hardware is present in the computer and how to interact with that hardware.
2. Booting from external media to the machine (a floppy disk, CD-ROM, USB RAM Device, USB HDD, USB CD-ROM, external Network PXE type device, etc).
3. Loading device drivers to support various hardware components and also the partitioning of a disk or array of disks in the computer.
4. Formatting the disks.
5. Running a program, which kicks off or initiates an installation of an operating system that copies and extracts pertinent files from a primary media source and in some instances, another wholly separate media source.
The Basic Input/Output System (BIOS) is built-in software that determines what a computer can do without accessing programs from a disk. On personal computers, the BIOS contains all the code required to control the keyboard, display screen, disk drives, serial communications, and a number of miscellaneous functions. Many modern PCs have a flash BIOS, which means that the BIOS has been recorded on a flash memory chip, which can be updated if necessary. The PC BIOS is fairly standardized, so all PCs are similar at this level (although there are different BIOS versions). Additional DOS functions are usually added through software modules. These additions one can upgrade to a newer version of DOS without changing the BIOS.
The BIOS runs an off onboard PROM, EPROM or most commonly, flash memory when the computer is powered on and it initializes and sometimes performs diagnostic tests on the hard drive, memory, video, chipset and other hardware. Subsequently, it typically decompresses itself from the BIOS memory space into the system's main memory and starts executing from there. Nearly all BIOS implementations can optionally execute a setup program interfacing the nonvolatile BIOS memory (CMOS). This memory holds user-customizable configuration data (time, date, hard drive details, etc.) assessed by BIOS code.
Referring to the previously mentioned first step of building a computer, configuring a BIOS in order for a computer to execute a software program, it is necessary to communicate with several layers in the computer hardware. In this communication process, the computer operating system (software) has to communicate with the Basic Input/Output System (BIOS) level of the computer. This BIOS level has the capability to interact with any of the hardware devices in the computer. As a result, all communication with the hardware is facilitated through the BIOS level. In the traditional legacy computer method, device drivers are needed for the operating system to talk to the hardware devices. The device driver is a transport component that allows the operating system to interface with each piece of the computer hardware. Subsequently, each hardware device would have a device driver associated with it. In the traditional legacy system, in order to install an operating system, often it is necessary to extensively search for outdated and antiquated device drivers to make an operating system accurately operate. This legacy method is not an efficient way to install an operating system regardless of the type of system.
In addition to the problems associated with the use of device drivers in the installation of operating system software, other aspects also exist beyond the installation of the operating system software. The computer building process is similar from one type of computer to another, but it is usually never the same unless every hardware component within the computer is identical. This means that for each nonidentical computer a different set of drivers and often different boot media must be used to partition and format the disk drivers. This process can become a very time consuming process for environments that often rebuild computers or that often have more than a few computers. Data centers, technology laboratories, hosting services on the Internet, and even many home users fall into this category of having many computers. Furthermore, the purpose of a computer may dictate the need to rebuild often. This rebuilding situation can be the case in a lab or testing environment, and educational courses and classrooms. Other events will require rebuilds including badly infected systems containing spy ware or viruses, hardware failures or even high utilization of computers.
Today, there are several software program products that aid a user in building a computer. Software products that allow a user to clone, copy, restore, and otherwise partition disk drives include Symantec Ghost, Powerquest Drive Image (now owned by Symantec), HD Clone, Ranish, MS Automated Deployment Services, Acronis Disk Director ands many others. What is common about these tools is that a special boot media is required that specifically supports the hardware in the computer one wants to manipulate and this requires searching for and acquiring drivers for specific disk drives, network cards, boot media and sometimes kernel drivers in order to successfully boot media and sometimes kernel drivers in order to successfully boot, partition, format, and install the OS. Many times the drivers are hard to locate and if they are available it is a very time consuming process. Then the specific drivers often become out of date or back-leveled, and need to be updated and for each nonidentical computer separate media must be maintained.
Others efforts have attempted to make this a less painful process by creating bootable CD-ROM's which contain virtual disk images that in turn can be loaded depending on which computer and which tasks one wants to accomplish. One such example is Bart's Modboot, BootCDm and PE builder found at http://www.nu2.nu. This approach only addresses the problem of maintaining a single image that would support all the computers a user works with on a regular basis. It does not address the up-front time consumed in finding the drivers, compiling the boot media and updating the back-leveled drivers. It is simply an organizational tool.
Other methods involve partitioning subsequent disks after an Operating System is already installed. In today's world, it is becoming more common to have multiple operating systems on a single physical computer. These can be referred to as logical partitions or LPAR's or as nodes. Hardware platforms such as IBM's i-Series and p-Series contain this ability to create LPAR's but, in order for an image to be duplicated, a master image must exist first so that all the steps above are still required when the computer is initially built.
Applications using network methods such as TFTP, PXE, NFS, FTP, and others to install an operating system via the network, have made the install process less difficult. Products like Redhat's Kiskstart, System Imager, SuSE Yast, AIX NIM, among sundry others, all demonstrate the ability to perform network OS installation but only for a particular flavor of a Unix or Microsoft Window's operating system. However, these application and network methods to access remote systems still require attention to specific drivers used to contact the remote server systems. Issues of new-to-market hardware for network cards and other boot device often hinder the ability to use such network OS installation methods reliably in small to large scale hosting environments.
There remains a need for a method and system in which device drivers are positional in a computing device such that the task of locating drivers for specific hardware drivers is substantially simplified. There also remains a need for a reconfigurable computing device in which the Basic Input/Output System can more easily locate and communicate with computer hardware device drivers.